Clean Code - Chapter 1 整洁代码

2016-09-03 21:06

作者:给立乐*
出处:http://spencer-dev.com/2016/09/03/Clean Code - Chapter 1 整洁代码
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。

烂代码、脏代码会引起怎样的状况?

会使工作效率严重降低!

本来数小时就能够解决的问题,却花了数个星期解决。

只想修改一行代码解决某问题,但却发现涉及数十上百各模块。

糟糕的代码引发混乱!别人修改糟糕的代码时,往往会越改越烂,就像『破窗理论』。


什么是整洁代码?

C++ 语言的发明者 Bjarne Stroustrup 说:

  • 优雅和高效的代码;
  • 代码逻辑直截了当,叫缺陷难以隐藏;
  • 尽量减少依赖关系,使之便于维护;
  • 依据某种分层战略完善错误处理代码;
  • 性能调至最优;
  • 整洁的代码只做好一件事;

OTI 公司创始人 Dave Thomas 说:

  • 整洁的代码应该由作者之外的开发者阅读和增补;
  • 它应当有单元测试和验收测试;
  • 它使用有意义的命名;
  • 它只提供一种而非多种做一件事的途径;
  • 它只有尽量少的依赖关系,而且要明确的定义和提供清晰的 API;
  • 代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表述;
  • 应当使方法块尽量小;
  • 应当用人类可读的方式来写代码;

Extreme Programming Installed(中译版《极限编程实施》)以及 Extreme Programming Adventures in C#(中译版《C# 极限编程探险》)的作者 Ron Jeffries 说:

  • 能通过所有测试;
  • 没有重复代码;
  • 体现系统中的全部设计理念;
  • 包含尽量少的实体,比如类、方法、函数等;

他们是怎样做的?

Ron Jeffries 说:

如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。我尽力去找出那到底是什么,然后再尽力的用更清晰的方式表达出来。

减少重复代码,提高表达力,提早构建简单抽象。

表达力还不止体现在命名上。我也会检查对象或方法是否想做的事情太多了。如果对象功能太多,最好是切分为两个或多个对象。如果方法功能太多,我总是使用抽取手段(Extract Method)重构之,从而得到一个较为清晰的说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。


最后

光把代码写好可不够。必须时时保持代码整洁。我们都见过代码随时间流逝而腐坏。我们应当更积极地阻止腐坏的发生。


Comments: